Multiple lane distribution (MLD) is commonly used for communicating data between a transmitter and receiver. MLD systems transmit data in parallel over multiple lanes or channels, where each lane may have different physical characteristics such as length, temperature and voltage. As a result, skew often occurs between the bitstreams transmitted over the multiple lanes.
Conventional receivers utilize framers to deskew the data. A respective framer and a respective first-in-first-out (FIFO) buffer are typically allocated to each lane. The framers determine the skew of the data for the lanes. The skews are used to determine offsets for writing the data into the FIFO buffers. As such, the skewed data may be realigned as it is written into the FIFO buffers with the offsets, thereby enabling deskewed data to be read from the FIFO buffers.
The realigned data is simultaneously read from the same memory location in all FIFO buffers at a predefined time. The predefined time is typically the time at which a predefined lane writes to a predefined memory location in a FIFO buffer, where the predefined lane and memory location are defined before runtime and not changed during runtime. The memory location for reading the data is also defined before runtime and not changed during runtime. Additionally, conventional receivers are unable to deskew data if the data read from all the FIFO buffers at the memory location includes a combination of new data (e.g., associated with a current frame) and old data (e.g., associated with a previous frame).
Accordingly, the deskewability or deskew tolerance of conventional receivers is limited. In a conventional receiver that allows reads and writes to the same location in the FIFO buffers, the maximum deskewability is determined by half the FIFO buffer depth minus one. For example, where a FIFO buffer has eight memory slots each holding one word of data, the maximum deskewability of the conventional receiver may be expressed as three memory slots or words of data. Accordingly, conventional receivers are unable to deskew data with a skew of half the FIFO buffer depth or greater.